package com.baizhi.service.impl;

import java.util.Date;

import com.baizhi.dao.UserDao;
import com.baizhi.entity.User;
import com.baizhi.service.UserService;
import com.baizhi.util.MD5Utils;
import com.baizhi.util.MyBatisUtil;
/**
 * @author 王雪洋
 * @Time 2017年4月30日 上午11:25:55
 * @disc: 用户业务层的实现方法
 */
public class UserServiceImpl implements UserService {
	private UserDao ud = null;
	private User user = null;
	/**
	 * 注册新用户
	 */
	@Override
	public int addUser(User user) {
		Integer id = null;
		//填充 后续参数
		//用户激活初始状态
		user.setUserflag("N");
		//用户创建时间
		user.setUsercretime(new Date());
		//用户密码加密  6位加密盐
		//生成随机盐
		String salt = MD5Utils.createRandomChar(6);
		//拼接明文密码+生成的随机盐
		String password = user.getUserpassword()+salt;
		//使用MD5加密
		String password_MD = MD5Utils.generateMD5Code(password);
		user.setUserpassword(password_MD);
		//保存生成的随机盐
		user.setUsersalt(salt);
		ud = MyBatisUtil.getMapper(UserDao.class);
		int i = ud.inertUser(user);
		if(i>0){
//			id = ud.selectUserId();
			id = user.getUserid();
			MyBatisUtil.commit();
		}else{
			MyBatisUtil.rollback();
		}
		return id;
	}
	/*
	 * 根据用户ID查询用户信息
	 */
	@Override
	public User findUserByUserid(Integer id) {
		ud = MyBatisUtil.getMapper(UserDao.class);
		return ud.selectUserById(id);
	}

	/*
	 * 更新用户
	 */
	@Override
	public int updateUser(User user) {
		ud = MyBatisUtil.getMapper(UserDao.class);
		int i = ud.updateUser(user);
		if(i>0){
			System.out.println("更新成功！");
			MyBatisUtil.commit();
		}else{
			System.out.println("更新失败！");
			MyBatisUtil.rollback();
		}
		return i;
	}
	/*
	 * 通过email和password验证用户身份
	 */
	@Override
	public User selectUserByEmail(String email,String password) {
		ud = MyBatisUtil.getMapper(UserDao.class);
		user = ud.selectUserByEmail(email);
		if(user != null){
			//使用md5实现加密匹配
			if(MD5Utils.generateMD5Code(password+user.getUsersalt()).equals(user.getUserpassword())){
				//验证密码通过
				return user;
			}
		}
		return null;
	}
	/*
	 * 检查邮箱是否已存在
	 */
	@Override
	public User selectUserEmail(String useremail) {
		ud = MyBatisUtil.getMapper(UserDao.class);
		user = ud.selectUserEmail(useremail);
		return user;
	}
}
